package affarituoi;

import func.func;
import javax.swing.JOptionPane;

public class affarituoi {

    public static String controllaPacco(String regione, String[] regionipremi, String[] premi) {
        String premio = "";
        for (int i = 0; i < 20; i++) {
            if (regionipremi[i].equalsIgnoreCase(regione)) {
                premio = premi[i];
            }
        }
        return premio;
    }

    public static int idRegioniPremio(String regione, String[] regionipremi) {
        int num = 0;
        for (int i = 0; i < regionipremi.length; i++) {
            if (regionipremi[i].equals(regione)) {
                num = i;
            }
        }
        return num;
    }

    public static int idPremio(String premio, String[] premi) {
        int num = 0;
        for (int i = 0; i < premi.length; i++) {
            if (premi[i].equals(premio)) {
                num = i;
            }
        }
        return num;
    }

    public static void main(String[] args) {
        int continua = 0;
        while (continua == 0) {
            String[] premi = {"0.01 €", "0.02 €", "0.20 €", "0.50 €", "1 €", "2 €", "5 €", "20 €", "50 €", "100 €", "Una camicia", "Un KG di cemento", "1.000 €", "5.000 €", "10.000 €", "50.000 €", "75.000 €", "100.000 €", "250.000 €", "500.000 €"};
            String[] lista = {"0.01 €", "0.02 €", "0.20 €", "0.50 €", "1 €", "2 €", "5 €", "20 €", "50 €", "100 €", "Una camicia", "Un KG di cemento", "1.000 €", "5.000 €", "10.000 €", "50.000 €", "75.000 €", "100.000 €", "250.000 €", "500.000 €"};
            String[] regioni = {"Valle d'Aosta", "Piemonte", "Lombardia", "Trentino", "Veneto", "Friuli", "Liguria", "Toscana", "Emilia romagna", "Marche", "Lazio", "Abruzzo", "Molise", "Umbria", "Campania", "Puglia", "Calabria", "Basilicata", "Sicilia", "Sardegna"};
            String[] regionipremi = new String[20];
            String[] numeri = new String[20];
            String[] scelte = {"Inizia a giocare", "Regolamento"};
            String[] pacchi = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20"};
            String nome;
            String regionescelta;
            String premio;
            String elenco = "";
            int regione;
            int pacco;
            int regolamento = 1;
            while (regolamento == 1) {
                regolamento = JOptionPane.showOptionDialog(null, "Benvenuto al gioco di Affari tuoi!", "Inizia", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, scelte, scelte[0]);
                if (regolamento == 1) {
                    JOptionPane.showMessageDialog(null, "Ci sono 20 regioni e 20 pacchi con relativi premi,\nda 0.01 € fino al premio più ambito, 500.000 €.\nDopo aver scelto la regione con la quale giocare si passerà a\nscoprire il valore del premio per eliminazione degli altri pacchi.\nDi tanto in tanto il Dottore vi farà l'offerta di cambiare il vostro pacco,\nma attenzione non sempre\nla sua offerta sarà vantaggiosa per voi!!\nSaprete resistere alla tentazione del mistero? ");
                }
            }
            for (int i = 0; i < 20; i++) {
                int rand = func.rand(19);
                while (func.isNumInStringArray(rand, numeri)) {
                    rand = func.rand(19);
                }
                numeri[rand] = rand + "";
                regionipremi[i] = regioni[rand];
            }
            nome = JOptionPane.showInputDialog("Inserire nome giocatore");
            while (nome.isEmpty()) {
                nome = JOptionPane.showInputDialog("Inserire nome giocatore");
            }
            for (int i = 0; i < regioni.length; i++) {
                elenco = elenco + (i + 1) + ": " + regioni[i] + "\n";
            }
            regione = JOptionPane.showOptionDialog(null, "Con che regione vuoi giocare?\n\n" + elenco + "\n\n", "Scegli la regione", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, pacchi, pacchi[0]);
            regionescelta = regioni[regione];
            premio = controllaPacco(regioni[regione], regionipremi, premi);
            JOptionPane.showMessageDialog(null, "Ok, ora devi aprire i pacchi delle altre regioni!");
            pacco = regione + 1;
            for (int i = 0; i < 20; i++) {
                if (i == regione) {
                    regioni[i] = "";
                }
                if (i + 1 == pacco) {
                    pacchi[i] = "";
                }
            }
            for (int i = 0; i < 19; i++) {
                int dottore = 1;
                String elencoI = "";
                String[] pacchichiusi = new String[19 - i];
                String elencopremi = "";
                int num = 0;
                for (int id = 0; id < pacchichiusi.length; id++) {
                    while (!func.isNumInStringArray(num, pacchi)) {
                        num++;
                    }
                    pacchichiusi[id] = num + "";
                    num++;
                }
                for (int id = 0; id < regioni.length; id++) {
                    if (!regioni[id].equals("")) {
                        elencoI = elencoI + (id + 1) + ": " + regioni[id] + "\n";
                    }
                }
                if (i == 5 || i == 8 || i == 11 || i == 14 || i == 17) {
                    JOptionPane.showMessageDialog(null, "Driiin!!!");
                    JOptionPane.showMessageDialog(null, "Driiin!!! Driiiiiiin!!");
                    JOptionPane.showMessageDialog(null, "Un offerta del dottore!!");
                    dottore = JOptionPane.showConfirmDialog(null, "Vuoi cambiare il tuo pacco?");
                }


                if (dottore == 0) {
                    int cambio = JOptionPane.showOptionDialog(null, "Con che pacco vuoi cambiare??\n\n" + elencoI + "\n\n", "Cambio pacco", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, pacchichiusi, pacchichiusi[0]);
                    int cambiato = Integer.parseInt(pacchichiusi[cambio]) - 1;
                    String premioII = controllaPacco(regioni[cambiato], regionipremi, premi);
                    if (idRegioniPremio(regionescelta, regionipremi) < idRegioniPremio(regioni[cambiato], regionipremi)) {
                        regionipremi[idRegioniPremio(regionescelta, regionipremi)] = regioni[cambiato];
                        regionipremi[idRegioniPremio(regioni[cambiato], regionipremi)] = regionescelta;
                    } else {
                        regionipremi[idRegioniPremio(regioni[cambiato], regionipremi)] = regionescelta;
                        regionipremi[idRegioniPremio(regionescelta, regionipremi)] = regioni[cambiato];
                    }
                    premio = premioII;
                    for (int ide = 0; ide < 20; ide++) {
                        if (ide == regione) {
                            regioni[ide] = regioni[cambiato];
                        }
                    }
                    for (int ide = 0; ide < 20; ide++) {
                        if (regioni[cambiato].equals(regioni[ide])) {
                            regioni[cambiato] = "";
                        }
                    }
                    regione = cambiato;
                    pacchichiusi[cambio] = pacco + "";
                    pacchi[pacco - 1] = pacco + "";
                    pacchi[cambiato] = "";
                    pacco = cambiato + 1;

                    elencoI = "";
                    for (int id = 0; id < regioni.length; id++) {
                        if (!regioni[id].equals("")) {
                            elencoI = elencoI + (id + 1) + ": " + regioni[id] + "\n";
                        }
                    }

                }
                int apri = JOptionPane.showOptionDialog(null, "Che pacco vuoi aprire??\n\n" + elencoI + "\n\n", "Scegli il pacco", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, pacchichiusi, pacchichiusi[0]);
                int paccoaperto = Integer.parseInt(pacchichiusi[apri]);
                String premioaperto = controllaPacco(regioni[paccoaperto - 1], regionipremi, premi);
                if (i == 18) {
                    JOptionPane.showMessageDialog(null, "Ok, ultimo pacco. Piano...piano..");
                    JOptionPane.showMessageDialog(null, "Scavicchi ma non apra!!!");
                }
                JOptionPane.showMessageDialog(null, "Hai aperto il pacco da " + premioaperto);
                for (int id = 0; id < 20; id++) {
                    if (lista[id].equals(premioaperto)) {
                        lista[id] = "";
                    }
                }
                for (int id = 0; id < 20; id++) {
                    elencopremi = elencopremi + lista[id] + "\n";
                }
                if (i != 18) {
                    JOptionPane.showMessageDialog(null, elencopremi);
                }
                for (int id = 0; id < 20; id++) {
                    if (id == paccoaperto - 1) {
                        regioni[id] = "";
                    }
                    if (id + 1 == paccoaperto) {
                        pacchi[id] = "";
                    }
                }
            }
            JOptionPane.showMessageDialog(null, "Complimenti " + nome + " hai vinto " + premio);
            continua = JOptionPane.showConfirmDialog(null, "Vuoi continuare a giocare?");
        }
    }
}
